package com.kizuki.algorithm.leetcode;

/**
 * 给你一个数组，将数组中的元素向右轮转 k 个位置，其中 k 是非负数。
 *
 * https://leetcode-cn.com/problems/rotate-array/
 */
public class 轮转数组 {

    class Solution {
        public void rotate(int[] nums, int k) {
            int len = nums.length;
            k = k % len;
            reserve(nums, 0, len - 1);
            reserve(nums, 0, k - 1);
            reserve(nums, k, len - 1);
        }

        void reserve(int[] a, int l, int r){
            while(l < r) {
                int t = a[l];
                a[l] = a[r];
                a[r] = t;
                l++;
                r--;
            }
        }
    }
}
